/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */

/**
 *
 * @author Kawe Ramon
 */
public class SolucaoQuestao2 {

    int [] tempoEntrada;
    int [] tempoSaida;
    int [][] processsamento;
    int [][] transferencia;
    int quantLinhas;
    int quantColunas;

    public SolucaoQuestao2(int x, int y){

        this.processsamento = new int[x][y];
        this.transferencia = new int[x][y];
        this.tempoEntrada = new int[x];
        this.tempoSaida = new int[x];
        this.quantLinhas = x;
        this.quantColunas = y;

    }

    public String toString(){
        String toReturn ="";

        for (int i = 0; i < 2; i++) {
            for (int j = 0; j < 6; j++) {
                toReturn+= this.processsamento[i][j] + " ";
            }
            toReturn += "\n";
        }
        toReturn += "\n";
        for (int i = 0; i < 2; i++) {
            for (int j = 0; j < 5; j++) {
                toReturn += this.transferencia[i][j] +" ";
            }
            toReturn += "\n";
        }
        toReturn += "\n";
        for (int i = 0; i < 2; i++) {
            toReturn += tempoEntrada[i] + " ";
        }
        toReturn += "\n";
        for (int i = 0; i < 2; i++) {
            toReturn += tempoSaida[i] + " ";
        }
        return toReturn;
    }


    public String getSolucao(){
        String toReturn = "";

        int [][] tempoProducao = new int[quantLinhas][quantColunas];
        int [][] linhaDeProducao = new int[quantLinhas][quantColunas];
        //preencher a matriz de tempo de producao

        tempoProducao[0][0] = processsamento[0][0] + tempoEntrada[0];
        tempoProducao[1][0] = processsamento[1][0] + tempoEntrada[1];

        linhaDeProducao[0][0] = 1;
        linhaDeProducao[0][1] = 2;

        String estacoes = "";
        estacoes += "Estações Escolhidas\n";

        int cont = 2;//contador para preencher a matriz de linha de produção
        int cont2 = 0;//contador para pegar a posicao da transferencia
        toReturn += "Tempo de Produção \n";

        for (int i = 0; i < 1; i++) {
            for (int j = 0; j < 5; j++) {

                if(cont != 6){
                   if((tempoProducao[i][j] + processsamento[i][j+1]) < (tempoProducao[i+1][j] + transferencia[i+1][j] + processsamento[i][j+1]) ){
                        tempoProducao[i][j+1] = tempoProducao[i][j] + processsamento[i][j+1];
                        estacoes+= "Estação nº" + (j+1) + " Linha " + 1 + "\n";
                        linhaDeProducao[i][cont] = 1;
                        
                    } else {
                        tempoProducao[i][j+1] = tempoProducao[i+1][j] + transferencia[i+1][j] + processsamento[i][j+1];
                        estacoes+= "Estação nº" + (j+1) + " Linha " + 2 + "\n";
                        linhaDeProducao[i][cont] = 2;
                        
                    }
                    cont++;
                } else{
                    if((tempoProducao[i][j] + processsamento[i][j+1]) < (tempoProducao[i+1][j] + transferencia[i+1][j] + processsamento[i][j+1]) ){
                        tempoProducao[i][j+1] = tempoProducao[i][j] + processsamento[i][j+1];
                        //estacoes+= "Estação " + (j+2) + " Linha " + 1 + "\n";
                        linhaDeProducao[i][cont-1] = 1;


                    } else {
                        tempoProducao[i][j+1] = tempoProducao[i+1][j] + transferencia[i+1][j] + processsamento[i][j+1];
                        //estacoes+= "Estação " + (j+2) + " Linha " + 2 + "\n";
                        linhaDeProducao[i][cont-1] = 2;

                    }
                }

                if(cont2 != 6){
                    if( (tempoProducao[i+1][j] + processsamento[i+1][j+1]) < (tempoProducao[i][j] + transferencia[i][cont2] + processsamento[i+1][j+1]) ){
                        tempoProducao[i+1][j+1] = tempoProducao[i+1][j] + processsamento[i+1][j+1];
                        //estacoes+= "Estação nº" + (j+2) + " Linha " + 2 + "\n";
                        linhaDeProducao[i+1][j] = 2;
                    } else{
                        tempoProducao[i+1][j+1] = tempoProducao[i][j] + transferencia[i][cont2] + processsamento[i+1][j+1];
                        //estacoes+= "Estação nº" + (j+2) + " Linha " + 1 + "\n";
                        linhaDeProducao[i+1][j] = 1;
                    }
                    cont2++;
                }
                
//                cont++;
                
            }

        }

        int tempoFinalLinha1 = tempoProducao[0][5] + tempoSaida[0];
        int tempoFinalLinha2 = tempoProducao[1][5] + tempoSaida[1];
        for (int i = 0; i < quantLinhas; i++) {
            for (int j = 0; j < quantColunas; j++) {
                toReturn += tempoProducao[i][j] + " ";
            }
            toReturn += "\n";
        }
        toReturn += "\nLinha de Produção Escolhida\n";
        for (int i = 0; i < quantLinhas; i++) {
            for (int j = 0; j < quantColunas-1; j++) {
                toReturn += linhaDeProducao[i][j] + " ";
            }
            toReturn += "\n";
        }

        toReturn+= "\n" +"Tempo Final Linha 1: "+ tempoFinalLinha1 + "\nTempo Final Linha 2: " + tempoFinalLinha2;
        return toReturn;

    }


}
